package com.glorystone.ins.service;

import com.glorystone.ins.common.common.PageVo;
import com.glorystone.ins.domain.EaringPoint;
import com.glorystone.ins.domain.Insurer;
import com.glorystone.ins.domain.Product;
import com.glorystone.ins.interceptor.PageList;
import com.glorystone.ins.vo.OperateResult;
import com.glorystone.ins.vo.RebateSetVo;

import java.text.ParseException;
import java.util.List;

/**
 * 项目名称：ins
 * 类名称：ProductSvr
 * 类描述：产品   service
 * 创建人：zgh
 * 创建时间：2018/3/12 14:14
 */
public interface ProductSvr {


    //public List<Product> getProjectList(Integer t,Product product);

    /**
     * 新建产品
     * @param product
     */
    OperateResult insert(Product product);
/**
     * 根据产品tid查询该上品信息
     * @param tid 产品tid
     * @return
     */
    Product getProjectByTid(Long tid);

    /**
     * 根据产品tid添加税点信息
     * @param product
     * @param s
     * @param m
     */
    void updateProduct(Product product, String m,String remark);

    /**
     * 根据保险公司查询产品的账期
     * @param company
     * @return
     */
   /* List<EaringPoint> getProductTimeByCompany(Long company,Integer type);*/

    /**
     * 设置自留点位
     * @param earing
     * @param earing1
     * @param tid
     * @param collectionForm
     * @param m
     */
    void setEaringPoint(String earing, String earing1, String tid, List<EaringPoint> collectionForm, String m,String remark);

    /**
     * 查询产品的详细信息
     * @param tid
     * @return
     */
    Product getProductByTid(Long tid);

    /**
     * 改变产品状态
     * @param status
     * @param tid
     * @return
     */
    void updateProductStatus(Integer status, Long tid);

    /**
     *
     * 获取所有产品列表
     * @return
     * @param t
     */
    PageList<Product> findList(Integer t, PageVo vo);

    /**
     * 把产品变为已定价状态
     * @param product
     */
    void updateProducts(Product product);

    /**
     * 检查该产品是否已被禁用
     * @param companyId
     * @return
     */
    List<Product> selectProductStatus(Long companyId);

    /**
     * 驳回
     * @param product
     */
    void rejectProduct(Product product);

    /**
     * 查询所有有可用产品的保险公司
     * @return
     */
    List<Insurer> getCompany();

    /**
     * 删除
     * @param tid
     * @return
     */
    void deleteById(Long tid);

    /**
     * 校验产品唯一
     * @param companyId
     * @param type
     * @return
     */
    Integer checkProduct(Long companyId, Integer type);

    /**
     * 获取渠道返点和税后保费
     * @param rebateSetVo
     * @return
     */
    OperateResult getRebateAndMoney(RebateSetVo rebateSetVo) throws ParseException;

    /**
     * 支付时检查产品的状态
     * @param productId
     * @return
     */
    OperateResult checkProductMessage(Long productId);

    /**
     * 查询所有已定价产品列表
     * @return
     */
    List<Product> findAllPriceList();

    /**
     * 产品过期修改状态
     * @param product
     */
    int updateProductToOverTime(Product product);

    /**
     * 查看驳回产品详情
     * @param tid
     * @return
     */
    Product getRejectProductByTid(Long tid);
}
